
<!DOCTYPE html>
<html lang="en" class="loading">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>TCP/IP体系结构 - Hexo</title>
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="google" content="notranslate" />
    <meta name="keywords" content="Fechin,"> 
    <meta name="description" content="1. TCP&amp;#x2F;IP 协议族1.1 TCP&amp;#x2F;IP协议族体系结构以及主要协议
TCP&amp;#x2F;IP协议族是一个四层协议系统，自底向上分别是 数据链路层—网络层—传输层—应用层。

,"> 
    <meta name="author" content="John Doe"> 
    <link rel="alternative" href="atom.xml" title="Hexo" type="application/atom+xml"> 
    <link rel="icon" href="/yi-mark-gitee-io/img/favicon.png"> 
    
    
    
    <meta name="twitter:card" content="summary"/>
    <meta name="twitter:title" content="TCP/IP体系结构 - Hexo"/>
    <meta name="twitter:description" content="1. TCP&amp;#x2F;IP 协议族1.1 TCP&amp;#x2F;IP协议族体系结构以及主要协议
TCP&amp;#x2F;IP协议族是一个四层协议系统，自底向上分别是 数据链路层—网络层—传输层—应用层。

,"/>
    
    
    
    
    <meta property="og:site_name" content="Hexo"/>
    <meta property="og:type" content="object"/>
    <meta property="og:title" content="TCP/IP体系结构 - Hexo"/>
    <meta property="og:description" content="1. TCP&amp;#x2F;IP 协议族1.1 TCP&amp;#x2F;IP协议族体系结构以及主要协议
TCP&amp;#x2F;IP协议族是一个四层协议系统，自底向上分别是 数据链路层—网络层—传输层—应用层。

,"/>
    
<link rel="stylesheet" href="/yi-mark-gitee-io/css/diaspora.css">

<meta name="generator" content="Hexo 6.0.0"></head>

<body class="loading">
    <span id="config-title" style="display:none">Hexo</span>
    <div id="loader"></div>
    <div id="single">
    <div id="top" style="display: block;">
    <div class="bar" style="width: 0;"></div>
    <a class="iconfont icon-home image-icon" href="javascript:;" data-url="https://yi-mark.gitee.io"></a>
    <div title="播放/暂停" class="iconfont icon-play"></div>
    <h3 class="subtitle">TCP/IP体系结构</h3>
    <div class="social">
        <div>
            <div class="share">
                <a title="获取二维码" class="iconfont icon-scan" href="javascript:;"></a>
            </div>
            <div id="qr"></div>
        </div>
    </div>
    <div class="scrollbar"></div>
</div>

    <div class="section">
        <div class="article">
    <div class='main'>
        <h1 class="title">TCP/IP体系结构</h1>
        <div class="stuff">
            <span>二月 04, 2022</span>
            
  <ul class="post-tags-list" itemprop="keywords"><li class="post-tags-list-item"><a class="post-tags-list-link" href="/yi-mark-gitee-io/tags/Linux%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/" rel="tag">Linux网络编程</a></li><li class="post-tags-list-item"><a class="post-tags-list-link" href="/yi-mark-gitee-io/tags/TCP-IP/" rel="tag">TCP&#x2F;IP</a></li></ul>


        </div>
        <div class="content markdown">
            <h1 id="1-TCP-x2F-IP-协议族"><a href="#1-TCP-x2F-IP-协议族" class="headerlink" title="1. TCP&#x2F;IP 协议族"></a>1. TCP&#x2F;IP 协议族</h1><h2 id="1-1-TCP-x2F-IP协议族体系结构以及主要协议"><a href="#1-1-TCP-x2F-IP协议族体系结构以及主要协议" class="headerlink" title="1.1 TCP&#x2F;IP协议族体系结构以及主要协议"></a>1.1 TCP&#x2F;IP协议族体系结构以及主要协议</h2><blockquote>
<p>TCP&#x2F;IP协议族是一个四层协议系统，自底向上分别是 数据链路层—网络层—传输层—应用层。</p>
</blockquote>
<p><img src="https://s2.loli.net/2022/02/03/Yh1KdtJxT5lAyo3.png" alt="image-20220203230803656"></p>
<h3 id="1-1-1-数据链路层"><a href="#1-1-1-数据链路层" class="headerlink" title="1.1.1 数据链路层"></a>1.1.1 数据链路层</h3><blockquote>
<p>数据链路层实现了网卡接口的网络驱动程序，以处理数据在物理媒介（如以太网）上的传输</p>
</blockquote>
<blockquote>
<p>数据链路层常用的两个协议：<strong>ARP协议（Address Resolve Protocol，地址解析协议）</strong>和<strong>RARP协议（Reverse Address Resovle Protocol，逆地址解析协议）</strong>。 </p>
<p>他们实现了IP地址和机器物理地址（通常是MAC地址）之间的转换</p>
</blockquote>
<ul>
<li>网络层使用IP地址寻址一台机器，而数据链路层使用物理地址寻址一台机器，因此网络层必须先将目标机器的IP地址转换成其物理地址，才能使用数据链路层提供的服务，这就是ARP协议的用途</li>
</ul>
<h3 id="1-1-2-网络层"><a href="#1-1-2-网络层" class="headerlink" title="1.1.2 网络层"></a>1.1.2 网络层</h3><blockquote>
<p>网络层实现数据包的选路和转发</p>
</blockquote>
<p>通信的两台主机一般不是直接相连的，而是通过多个中间节点（路由器）连接的。网络层的任务就是选择这些中间节点，以确定两台主机之间的通信路径。</p>
<blockquote>
<p> <em>网络层对上层协议隐藏了网络拓扑连接的细节，使得传输层和网络应用程序看来，通信双方是直接相连的</em></p>
</blockquote>
<blockquote>
<p>网络层的最核心协议是<strong>IP协议（Internet Protocol，因特网协议）</strong>。IP协议根据数据包的目的IP来决定如何投递它。如果数据包不能直接发送给目标主机，那么IP协议就为它寻找一个合适的下一跳（next hop）路由器，并将数据包交付给该路由器来转发。多次重复这一过程，数据包最终到达目标主机，或者由于发送失败而被丢弃。</p>
</blockquote>
<ul>
<li>IP协议使用逐跳（hop by hop）的方式确定通信路径</li>
</ul>
<blockquote>
<p>网络层另外一个重要的协议是<strong>ICMP协议（Internet Control Message Protocol，因特网控制报文协议）</strong>。 它是IP协议的重要补充，主要用于检测网络连接。</p>
</blockquote>
<ul>
<li>ICMP协议使用的报文格式如下：</li>
</ul>
<p><img src="https://s2.loli.net/2022/02/03/zpXvQdZlOHsoWrL.png" alt="image-20220203233029778"></p>
<ul>
<li>8位类型字段用于区分报文类型。分为两大类：    <strong>差错报文</strong>和<strong>查询报文</strong>。</li>
<li>差错报文主要用于回应网络错误，比如目标不可达（类型值为3）.</li>
<li>查询报文主要用于查询网络信息，比如ping程序就是使用ICMP报文查看目标是否可到达（类型值为8）</li>
</ul>
<blockquote>
<p>ICMP 报文使用16位校验和 字段对整个报文（包括头部和内容部分）进行循环冗余校验，以检验报文在传输过程中是否损坏</p>
</blockquote>
<h3 id="1-1-3-传输层"><a href="#1-1-3-传输层" class="headerlink" title="1.1.3 传输层"></a>1.1.3 传输层</h3><blockquote>
<p>传输层为两台主机上的应用程序提供**端到端(end to end)**的通信。</p>
<ul>
<li>与网络层使用的逐跳通信方式不同，传输层只关心通信的起始端和目的端，而不在乎数据包的中转过程</li>
</ul>
</blockquote>
<p><img src="https://s2.loli.net/2022/02/03/SKxwcAOeTjHEQ96.png" alt="image-20220203233824766"></p>
<ul>
<li>垂直的实线箭头表示TCP&#x2F;IP协议族各层之间的<strong>实体通信</strong>（数据包是沿着这些线路传递的）</li>
<li>水平的虚线箭头表示<strong>逻辑通信线路</strong></li>
</ul>
<blockquote>
<p>传输层协议主要有三个： TCP协议、UDP协议和SCTP协议</p>
</blockquote>
<blockquote>
<p><strong>TCP 协议（Transmission Control Protocol，传输控制协议）</strong>为应用层提供可靠的、面向连接的和基于流（Stream）的服务。</p>
<p>TCP协议使用超时重传、数据确认等方式来确保数据包正确地发送到目的端，因此TCP服务是可靠的</p>
</blockquote>
<blockquote>
<p><strong>UDP协议（User Datagram Protocol，用户数据报协议）</strong>则与TCP协议完全相反，它为应用层提供不可靠、无连接和基于数据报的服务。</p>
<ul>
<li>“不可靠” 意味着UDP协议无法保证数据从发送端正确地到目的端。如果数据在中途丢失，或者目的端通过校验发现数据错误而将其丢弃，则UDP协议只是简单地通知应用程序发送失败。</li>
<li>“无连接” 即双方不保持一个长久的联系，因此应用程序每次发送数据都要明确指定接收端的地址</li>
<li>“基于数据报的服务” 是相对基于流的服务而言。每个UDP数据包都有一个长度，接收端必须以该长度为最小单位将其所有内容一次性读出，否则数据将被截断</li>
</ul>
</blockquote>
<blockquote>
<p><strong>SCTP协议（Stream Control Transmission Protocol，流控制协议）</strong>，是为了在因特网上传输电话信号而设计的</p>
</blockquote>
<h3 id="1-1-4-应用层"><a href="#1-1-4-应用层" class="headerlink" title="1.1.4 应用层"></a>1.1.4 应用层</h3><blockquote>
<p>应用层负责处理应用程序的逻辑</p>
</blockquote>
<blockquote>
<ul>
<li>ping是应用程序，而不是协议。它是利用ICMP报文检测网络连接，是调试网络环境的必备工具</li>
<li><strong>telnet协议</strong>是一种远程登录协议，它使我们能在本地完成远程任务</li>
<li><strong>OSPF（Open Shortest Path First，开发最短路径优先）协议</strong>是一种动态路由更新协议，用于路由器之间的通信，以告知对方各自的路由信息</li>
<li><strong>DNS（Domain Name Service，域名服务）协议</strong>提供机器域名到IP地址的转换</li>
</ul>
</blockquote>
<blockquote>
<p>应用层协议（或程序）可能跳过传输层直接使用网络层提供的服务，比如ping程序和OSPF协议</p>
<p>应用层协议（或程序）既可以使用TCP服务，又可以使用UDP服务</p>
</blockquote>

            <!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->
            <audio id="audio" loop="1" preload="auto" controls="controls" data-autoplay="false">
                <source type="audio/mpeg" src="">
            </audio>
            
                <ul id="audio-list" style="display:none">
                    
                        
                            <li title="0" data-url="http://link.hhtjim.com/163/425570952.mp3"></li>
                        
                    
                        
                            <li title="1" data-url="http://link.hhtjim.com/163/425570952.mp3"></li>
                        
                    
                </ul>
            
        </div>
        
    <div id="gitalk-container" class="comment link"
		data-enable="false"
        data-ae="false"
        data-ci=""
        data-cs=""
        data-r=""
        data-o=""
        data-a=""
        data-d="false"
    >查看评论</div>


    </div>
    
</div>


    </div>
</div>
</body>


<script src="//lib.baomitu.com/jquery/1.8.3/jquery.min.js"></script>
<script src="/yi-mark-gitee-io/js/plugin.js"></script>
<script src="/yi-mark-gitee-io/js/typed.js"></script>
<script src="/yi-mark-gitee-io/js/diaspora.js"></script>


<link rel="stylesheet" href="/yi-mark-gitee-io/photoswipe/photoswipe.css">
<link rel="stylesheet" href="/yi-mark-gitee-io/photoswipe/default-skin/default-skin.css">


<script src="/yi-mark-gitee-io/photoswipe/photoswipe.min.js"></script>
<script src="/yi-mark-gitee-io/photoswipe/photoswipe-ui-default.min.js"></script>


<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>
    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">
        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>
        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">
            <div class="pswp__top-bar">
                <!--  Controls are self-explanatory. Order can be changed. -->
                <div class="pswp__counter"></div>
                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
                <button class="pswp__button pswp__button--share" title="Share"></button>
                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                      <div class="pswp__preloader__cut">
                        <div class="pswp__preloader__donut"></div>
                      </div>
                    </div>
                </div>
            </div>
            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div> 
            </div>
            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>
            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>
            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>
        </div>
    </div>
</div>






</html>
